package _3内存问题;

public class MemoryDemo
{

	public static void main(String[] args)
	{
		
		// 整型变量
//		int a;
//		System.out.println(a);
		// The local variable a may not have been initialized
		// 局部变量必须初始化会后 才能使用
		
		// 一个整型数组的变量
//		int[] b;
////		System.out.println(b[0]);
//		b = new int[3];
//		// new int[3] 		在堆内存中创建一个容纳3个整型元素数组对象
//		// b = new int[3]	将这个数组对象 内存首地址放到 b中
//		// 					我们通过b，就可以访问这个数组对象了
//		b[0] = 1;
//		b[1] = 5;
//		b[2] = 10;
//		
//		b = null;
//		
//		b[0] = 10;
////		Exception in thread "main" java.lang.NullPointerException
////		at _3内存问题.MemoryDemo.main(MemoryDemo.java:28)
		
		
//		int[] b;
//		b = new int[3];
//		b = new int[5];// b 指向了新建的5个元素的数组对象，之前的3个元素的数组对象会被gc回收掉
		
		
		int[] b;
		b = new int[3];
		int[] c;
		c = b;
		
		c[1] = 1234;
		
		System.out.println(b[1]);
		System.out.println(b[0]);
		
		boolean[] e = new boolean[3];
		System.out.println(e[0]);
		
		
		// 栈内存 stack
		// 存放的是方法的栈帧，栈帧里放的是这个方法的局部变量，
		// 局部变量必须先初始化,才能使用 
		
		// 堆内存 heap
		// 存放的是对象， new 出来的
		// 堆内存的变量，都有初始值
		
	}

}
